Skip to content

GCP 자동 배포 파이프라인 구축 (GitHub Actions + WIF + IAP)#149

Open
JeekLee wants to merge 11 commits intomainfrom
feature/code-deploy-gcp
Open

GCP 자동 배포 파이프라인 구축 (GitHub Actions + WIF + IAP)#149
JeekLee wants to merge 11 commits intomainfrom
feature/code-deploy-gcp

Conversation

@JeekLee
Copy link
Contributor

@JeekLee JeekLee commented Mar 21, 2026

개요

GitHub Actions를 활용한 GCP 자동 배포 파이프라인을 구축합니다.
컨테이너 레지스트리로는 GHCR을 사용합니다.
현재는 main 브랜치 푸시 시 자동 배포되며, 추후 태그 기반 릴리스 버전 관리로 전환할 예정입니다.

변경 사항

app/Dockerfile 수정

  • 기존: 컨테이너 내부에서 Gradle 빌드 (단일 스테이지, JDK)
  • 변경: CI에서 빌드된 JAR을 복사하는 방식으로 전환 (JRE Alpine, 빌드 시간 단축)
  • JAR 경로 버그 수정: build/libs/app/build/libs/ (멀티모듈 구조 반영)

.github/workflows/build-and-deploy.yml 신규 작성

파이프라인 전체 구성:

  1. Gradle 빌드 (의존성 캐시 적용)
  2. Docker 이미지 빌드 및 GHCR 푸시 (레이어 캐시 적용)
image
  1. WIF(Workload Identity Federation)로 GCP 인증
  2. .env 파일(GitHub Secret DOT_ENV)을 SCP로 VM 전송
  3. IAP 터널을 통해 GCE VM에 SSH 접속 후 컨테이너 교체 배포  

향후 전환 예정 (주석으로 준비됨)

  • 트리거: main 브랜치 푸시 → v* 태그 푸시
  • GitHub Release 자동 생성 (release notes 포함)
  • 태그에서 릴리스 버전 추출하여 이미지 버전 태그 관리 (latest + x.y.z)

app/src/main/resources/application.yml 수정

  • Redis host/port 하드코딩 제거 → ${REDIS_HOST:localhost}, ${REDIS_PORT:6379} 환경변수화
  • Docker 네트워크(api_backend) 내 컨테이너 이름(pfplay-redis)으로 연결 가능하도록 대응
    ## 인프라 사전 설정 (VM)
  • GHA SA(github-actions-deployer)에 roles/iam.serviceAccountUser 권한 부여
  • GHA SA OS Login 유저를 docker 그룹에 추가

필요한 GitHub Secrets

  • GCP_PROJECT_ID: GCP 프로젝트 ID
  • WIF_PROVIDER: Workload Identity Federation 프로바이더
  • WIF_SERVICE_ACCOUNT: 배포용 서비스 어카운트
  • PACKAGE_ACCESS_TOKEN: GHCR 접근용 PAT (VM에서 이미지 pull 시 사용)
  • DOT_ENV: 애플리케이션 .env 파일 전체 내용
image

@JeekLee JeekLee self-assigned this Mar 21, 2026
@JeekLee JeekLee added the enhancement New feature or request label Mar 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant